Springboot整合日志管理

您所在的位置:网站首页 flink整合springboot 取消日志管理 Springboot整合日志管理

Springboot整合日志管理

2024-07-13 23:01| 来源: 网络整理| 查看: 265

Springboot整合日志管理 1. 常用的Java日志框架有哪些

1.java.util.logging(jdk自带的Java原生日志框架) 2.log4j(Apache的开源项目) 3.log4j2(相比其他日志系统,log4j2丢数据情况少;disruptor技术,在多线程环境下,性能高于logback等10倍以上;利用jdk1.5并发的特性,减少了死锁的发生) 4.logback(Log4j的改良版本,spring-boot-starter依赖中有spring-boot-starter-logging依赖,所以springboot将自动使用logback作为应用日志框架) 5.tinylog(由于缺少了一些功能,运行特别快,非常适合小项目)

注意开发包的概念,例如SLF4J(Simple Logging Facade for Java)和Apache Commons Logging,它们提供了一些抽象层,优点是可以将代码和日志框架解耦,从而可以在不同的日志框架中进行切换。

2. Java日志组件分类

1.Loggers:Logger负责捕捉事件并将其发送给合适的Appender 2.Appenders:也被称为Handlers,负责将日志事件记录到目标位置。在将日志事件输出之前,Appenders使用Layouts来对事件进行格式化处理 输出目标位置: 1).console–控制台 2).file–文件 3.Layouts:也被称为Formatters,它负责对日志事件中的数据进行转换和格式化。Layouts决定了数据在一条日志记录中的最终形式 输出格式: 1).SimpleLayout–以简单的形式显示 2).HTMLLayout–以HTML格式显示 3).PatternLayout–自定义形式显示 %d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间,输出到毫秒的时间 %-5level : 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0 %c : logger的名称(%logger) %t : 输出当前线程名称 %p : 日志输出格式 %m : 日志内容,即 logger.info(“message”) %n : 换行符 %C : Java类名(%F) %L : 行号 %M : 方法名 %l : 输出语句所在的行数, 包括类名、方法名、文件名、行数 hostName : 本地机器名 hostAddress : 本地ip地址

3.常见的日志级别

这里按照级别从低到高排序: TRACE:追踪。一般上对核心系统进行性能调试或者跟踪问题时有用,此级别很低,一般上是不开启的,开启后日志会很快就打满磁盘的。 DEBUG:调试。这个大家应该不陌生了。开发过程中主要是打印记录一些运行信息之类的。 INFO:信息。这个是最常见的了,大部分默认就是这个级别的日志。一般上记录了一些交互信息,一些请求参数等等。可方便定位问题,或者还原现场环境的时候使用。此日志相对来说是比较重要的。 WARN:警告。这个一般上是记录潜在的可能会引发错误的信息。比如启动时,某某配置文件不存在或者某个参数未设置之类的。 ERROR:错误。这个也是比较常见的,一般上是在捕获异常时输出,虽然发生了错误,但不影响系统的正常运行。但可能会导致系统出错或是宕机等。 FATAL:导致应用程序提前终止的严重错误.一般这些信息将立即呈现在状态控制台上 OFF:最高级别,用于关闭日志记录

注意:如果将日志设置在某个等级,则比此级别高的都能打印出来。比如,设置了INFO,那么ERROR, WARN等都能输出打印了,而DEBUG、TRACE等就被忽略了。

4. Springboot默认日志配置Demo 4.1 搭建Springboot项目架构

Springboot框架的默认日志配置

4.2 在pom.xml中添加依赖 org.springframework.boot spring-boot-starter-web 2.1.3.RELEASE

下图展示的依赖传递关系解释了为什么Springboot自带logback日志框架 springboot启动依赖传递了logback依赖

4.3 在resources下创建application.yml配置文件 server: port: 8080 logging: config: classpath: logback-spring.xml 4.4 在resources下创建logback-spring.xml配置文件 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n ${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log 30 %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 10MB 4.5 编写启动类 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MySpringApplication { public static void main(String[] args) { SpringApplication.run(MySpringApplication.class, args); } } 4.6 编写测试controller import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { private final static Logger logger = LoggerFactory.getLogger(TestController.class); @RequestMapping("/login") public String login() { logger.info("logback 访问hello"); logger.error("logback 访问hello"); return "login success"; } } 4.7 验证结果

浏览器访问路径:http://localhost:8080/login 返回login success 观察控制台打印结果:

2020-01-03 15:55:12.287 [http-nio-8080-exec-1] INFO com.kd.log.controller.TestController - logback 访问hello 2020-01-03 15:55:12.288 [http-nio-8080-exec-1] ERROR com.kd.log.controller.TestController - logback 访问hello

同时在E:\test\log\中生成TestWeb.log.2020-01-03.log日志文件

5. Springboot整合log4j2Demo 5.1搭建Springboot项目架构

springboot整合log4j2日志框架

5.2 在pom.xml配置文件中添加依赖

这里需注意:添加spring-boot-starter-log4j2依赖的同时,排除掉spring-boot-starter-logging依赖,避免出现版本冲突的问题.

org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-logging 2.1.3.RELEASE org.springframework.boot spring-boot-starter-log4j2 2.1.1.RELEASE 5.3 在resources下创建application.yml配置文件 server: port: 8080 logging: config: classpath: log4j2-spring.xml 5.4 在resources下创建log4j2-spring.xml配置文件 5.5 编写启动类 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MySpringApplication { public static void main(String[] args) { SpringApplication.run(MySpringApplication.class, args); } } 5.6 编写测试controller import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { private static final Logger logger = LoggerFactory.getLogger(TestController.class); @RequestMapping("/login") public String login() { logger.info("log4j2日志打印..."); return "login success"; } } 5.7 验证结果

启动项目,浏览器访问路径:http://localhost:8080/login 控制台打印日志内容:

13:18:20.902 [http-nio-8080-exec-1] INFO com.kd.log.controller.TestController - log4j2日志打印…

同时在E:\test\log 生成error.log,info.log,test.log,warn.log日志文件

6 lombok插件简化创建Logger类 6.1 首先在pom.xml配置文件中添加lombok依赖 org.projectlombok lombok 1.18.10 6.2 在Controller类上使用@Slf4j注解 import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @Slf4j public class HomeController { @RequestMapping("/login") public String login() { log.info("log4j日志打印..."); return "login"; } } 6.3 验证结果

启动项目,浏览器访问路径:http://localhost:8080/login 控制台打印日志内容:

18:11:00.880 [http-nio-8080-exec-1] INFO com.kd.log.controller.HomeController - log4j日志打印…

同时在E:\test\log 生成error.log,info.log,test.log,warn.log日志文件



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3